/*
 * @Author: evanxu evanxu8023@163.com
 * @Date: 2022-07-20 19:07:06
 * @LastEditors: Evanxu-home evanxu8023@163.com
 * @LastEditTime: 2025-11-03 22:12:32
 * @FilePath: \program\hardware\key.c
 * @Description: 
 * 
 * Copyright (c) 2022 by evanxu evanxu8023@163.com, All Rights Reserved. 
 */
#include "key.h"


void key_gpio_init(void) 
{
	gpio_init_type gpio_init_struct;
	
	/* enable the button clock */
	crm_periph_clock_enable(KEY_ADD_GPIO_CRM_CLK, TRUE);
	crm_periph_clock_enable(KEY_CUT_GPIO_CRM_CLK, TRUE);
	crm_periph_clock_enable(KEY_SET_GPIO_CRM_CLK, TRUE);
	crm_periph_clock_enable(KEY_ENTER_GPIO_CRM_CLK, TRUE);
    crm_periph_clock_enable(KEY_SENSOR_A_GPIO_CRM_CLK, TRUE);
	crm_periph_clock_enable(KEY_SENSOR_B_GPIO_CRM_CLK, TRUE);

	/* set default parameter */
	gpio_default_para_init(&gpio_init_struct);

	/* configure button pin as input with pull-up/pull-down */
	gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
	gpio_init_struct.gpio_out_type	= GPIO_OUTPUT_PUSH_PULL;
	gpio_init_struct.gpio_mode = GPIO_MODE_INPUT;
	gpio_init_struct.gpio_pull = GPIO_PULL_UP;
	
	gpio_init_struct.gpio_pins = KEY_ADD_PIN;
	gpio_init(KEY_ADD_GPIO, &gpio_init_struct);
	gpio_init_struct.gpio_pins = KEY_CUT_PIN;
	gpio_init(KEY_CUT_GPIO, &gpio_init_struct);
	gpio_init_struct.gpio_pins = KEY_SET_PIN;
	gpio_init(KEY_SET_GPIO, &gpio_init_struct);
	gpio_init_struct.gpio_pins = KEY_ENTER_PIN;
	gpio_init(KEY_ENTER_GPIO, &gpio_init_struct);
	gpio_init_struct.gpio_pins = KEY_SENSOR_A_PIN;
	gpio_init(KEY_SENSOR_A_GPIO, &gpio_init_struct);
	gpio_init_struct.gpio_pins = KEY_SENSOR_B_PIN;
	gpio_init(KEY_SENSOR_B_GPIO, &gpio_init_struct);
}






